package in.co.sneh.controller.FileUploadServlet;

import java.sql.*;
import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.*;

public class conexion 
{
    MysqlDataSource datasource;
    Connection conexion;
    Statement st;
    String estado="Ok";
    int tamaño1=0;
    int tamaño2=0;
    
    public conexion()
    {
        datasource=new MysqlDataSource();
        datasource.setUser("root");
        datasource.setPassword("root");
        datasource.setDatabaseName("validador_tef");
        datasource.setServerName("127.0.0.1");
        try {
            conexion=datasource.getConnection();
            st=conexion.createStatement();
        } catch (SQLException ex) {
            estado=ex.getMessage();
                    }
    }
      
    public void insertarexp(String Fecha_Vuelo, String compania,String Vuelo, String Aeropuerto,String Hora_entrada_corral,String Hora_salida_corral,String Tiempo_Total_TEF,String Corral,String Negocio, int contador_fila) 
    {
        try {
            if(!"NULL".equals(Fecha_Vuelo))  {Fecha_Vuelo = "'" + Fecha_Vuelo + "'";}
            if(!"NULL".equals(compania))  {compania = "'" + compania + "'";}
            if(!"NULL".equals(Vuelo))  {Vuelo = "'" + Vuelo + "'";}
            if(!"NULL".equals(Aeropuerto))  {Aeropuerto = "'" + Aeropuerto+ "'";}
            if(!"NULL".equals(Hora_entrada_corral))  {Hora_entrada_corral = "'" + Hora_entrada_corral + "'";}
            if(!"NULL".equals(Hora_salida_corral))  {Hora_salida_corral = "'" + Hora_salida_corral + "'";}
            if(!"NULL".equals(Tiempo_Total_TEF))  {Tiempo_Total_TEF = "'" + Tiempo_Total_TEF + "'";}
            if(!"NULL".equals(Corral))  {Corral = "'" + Corral + "'";}            
            if(!"NULL".equals(Negocio))  {Negocio = "'" + Negocio + "'";}
           
        

             String contador = "'" + Integer.toString(contador_fila) + "'";
            String insert = "INSERT INTO newexp (Fecha_Vuelo,compania,Vuelo,Aeropuerto,Hora_entrada,Hora_Salida,Tiempo_TEF,Corral,Negocio, contador) "
                    +"VALUES (" + Fecha_Vuelo+"," + compania  +"," + Vuelo + "," + Aeropuerto + "," + Hora_entrada_corral + "," + Hora_salida_corral + "," + Tiempo_Total_TEF + "," + Corral + "," + Negocio + "," +contador + ")"; 
            st.executeUpdate(insert);
        } catch (SQLException ex) {
            estado = ex.getMessage();
        }
    }
    
    public void borrarrepetidos()
    {
        String truncate1 =  "TRUNCATE TABLE tefcopia";
        String insert1 = "INSERT INTO tefcopia (Fecha_Vuelo,compania,Vuelo,Aeropuerto,Hora_entrada,Hora_Salida,Tiempo_TEF,Corral,Negocio, contador) (SELECT Fecha_Vuelo,compania,Vuelo,Aeropuerto,Hora_entrada,Hora_Salida,Tiempo_TEF,Corral,Negocio, contador FROM newexp)";
       
        String delete = "DELETE from tefcopia USING tefcopia, newexp WHERE (tefcopia.newexp_ID < newexp.newexp_ID) and (tefcopia.Fecha_Vuelo = newexp.Fecha_Vuelo) and (tefcopia.Vuelo = newexp.Vuelo) and (tefcopia.Hora_entrada = newexp.Hora_entrada) and (tefcopia.compania = newexp.compania)" ;
        String truncate4 = "TRUNCATE TABLE newexp";
        String insert4 = "INSERT INTO newexp (Fecha_Vuelo,compania,Vuelo,Aeropuerto,Hora_entrada,Hora_Salida,Tiempo_TEF,Corral,Negocio, contador) (SELECT DISTINCT Fecha_Vuelo,compania,Vuelo,Aeropuerto,Hora_entrada,Hora_Salida,Tiempo_TEF,Corral,Negocio, contador FROM tefcopia ORDER BY Fecha_Vuelo ASC)";
        String ordenar="SELECT * FROM newexp ORDER BY Fecha_Vuelo ASC";      
        try {
            st.executeUpdate(truncate1);
            st.executeUpdate(insert1);
            st.executeUpdate(delete);
            st.executeUpdate(truncate4);
            st.executeUpdate(insert4);
        //    st.executeUpdate(ordenar);
          
            } catch (SQLException ex) {
          estado= ex.getMessage();
        }
    }
        
    
    public boolean Comprobacion(ArrayList tamaño) {

        try {

            ResultSet s = st.executeQuery("select * from tablafinal");
            s.last();
            tamaño1 = s.getRow();

        } catch (SQLException ex) {
            Logger.getLogger(conexion.class.getName()).log(Level.SEVERE, null, ex);
        }

        for (int i = 0; i < tamaño.size(); i++) {
            if (tamaño1 != (int)tamaño.get(i)){
                return false;
            }
        }

        return true;

    }
    public void QueryComprobacion(){
        String QueryC="select YEAR( t.FLEX_FCH ) AS Anio,\n" +
"MONTH( t.FLEX_FCH ) AS Mes,\n" +
"t.EXPD_TPO AS 'Tipo Expediente',\n" +
"t.EXPD_APR_CDG AS Estacion,\n" +
"t.EXPD_LNAR_CDG AS 'Linea Aerea',\n" +
"t.EXPD_NMR AS 'Numero Expediente' ,\n" +
"t.EXPD_NMB AS 'No2mbre' ,\n" +
"t.EXPD_APE AS 'Apellido',\n" +
"t.EXPD_PRD_CDG AS 'Codigo' ,\n" +
"c.nombre AS 'Descripción Codigo',\n" +
"t.EXPD_CRT_FCH AS 'Fecha Creacion',\n" +
"t.FLEX_FCH AS 'Fecha Vuelo',\n" +
"s.id_semana AS 'Semana',\n" +
"t.EXPD_FCH_CLOSURE AS 'Fecha Cierre',\n" +
"t.EXPD_PRD_APR_CDG AS 'Estacion Responsable',\n" +
"t.PAIS AS 'PAIS',\n" +
"max(t.EXPD_CST_TOTAL) AS 'Costo Total',\n" +
"t.EXPD_ROUTING AS Routing,\n" +
"t.FLEX_NMR AS 'Numero Vuelo',\n" +
"t.EXPD_CLASS AS Clase ,\n" +
"t.RUTA_INF AS Ruta_INF,\n" +
"t.TIPO_CLASE AS 'Tipo Clase',\n" +
"t.TIEMPO_CIERRE 'Demora Cierre',\n" +
"t.CUMPLE_META AS 'Cumple Meta Crr',\n" +
"c.gestionable as Gestionable,\n" +
"c.tipo as Tipo\n" +
"FROM tablafinal t, semanas2 s, codigos_scl c\n" +
"WHERE s.fch = t.FLEX_FCH\n" +
"AND t.EXPD_PRD_CDG = c.id_codigo AND t.FLEX_FCH >= '2013-01-01'\n" +
"and t.EXPD_PRD_CDG != '94'\n" +
"and t.EXPD_PRD_CDG != '93'\n" +
"and t.EXPD_PRD_CDG != '79'\n" +
"and t.EXPD_PRD_CDG != '45'\n" +
"group by YEAR( t.FLEX_FCH ),MONTH( t.FLEX_FCH ),t.EXPD_TPO,t.EXPD_APR_CDG,t.EXPD_LNAR_CDG,\n" +
"t.EXPD_NMR,\n" +
"t.EXPD_NMB,\n" +
"t.EXPD_APE,\n" +
"t.EXPD_PRD_CDG,\n" +
"c.nombre,\n" +
"t.EXPD_CRT_FCH,\n" +
"t.FLEX_FCH,\n" +
"s.id_semana,\n" +
"t.EXPD_FCH_CLOSURE,\n" +
"t.EXPD_PRD_APR_CDG,\n" +
"t.PAIS,\n" +
"t.EXPD_ROUTING,\n" +
"t.FLEX_NMR,\n" +
"t.EXPD_CLASS,\n" +
"t.RUTA_INF,\n" +
"t.TIPO_CLASE,\n" +
"t.TIEMPO_CIERRE,\n" +
"t.CUMPLE_META ";
    try {
            st.executeUpdate(QueryC);
            if(!estado.equals("Ok")){System.out.println(estado); estado = "Ok";}
            System.out.println("Query LISTO");
    }catch (SQLException ex) {
            estado=ex.getMessage();
        }
        System.out.println(estado); 
    
    }
    
   
    
    }   

  
    

    
    
